#include "../ControleLogin.h"

bool ControleLogin::verificar(string login, string senha)
{
    Usuario* u = NULL;

    u = ControleDados::DAOUsuario->recuperar(login);

    if (u == NULL)
    {
        return false;
    } else {
        if (senha.compare(u->get_senha()) != 0)
        {
            return false;
        } else {
            return true;
        }
    }
}

void ControleLogin::logout()
{
    ControleSessao::terminar_sessao();
    cout << endl << "Logout efetuado com sucesso!" << endl;
}

bool ControleLogin::login()
{
    string login;
    string senha;

    Usuario* u = NULL;

    int tentativas = 0;
    bool prosseguir = false;

    cout << "\n"
            "\nLogin no sistema\n"
            "\n";

    do {
        cout << "Login: ";
        cin >> login;
        cout << "Senha: ";
        cin >> senha;

        if (ControleLogin::verificar(login,senha))
        {
            prosseguir = true;
        } else {
            cout << "\nErro. Usuario ou senha incoretos. Tente novamente.\n\n";
            tentativas++;
        }

    } while ((tentativas < _MAX_LOGIN_ATTEMP_)&&(prosseguir == false));

    if (prosseguir != true)
    {
        cout << "\nMaximo de tentativas de login efetuadas. Tente novamente mais tarde.";
        return false;
    } else {
        u = ControleDados::DAOUsuario->recuperar(login);

        //cout << "Nova sessao!";

        ControleSessao::nova_sessao(u);

        //cout << "\nID: " << ControleSessao::get_sessao().get_id_sessao();

        return true;
    }
}
